﻿namespace MetaVideoEditorEvolved.Helper
{
	using System.IO;
	using System.Linq.Expressions;
	using System.Text;
	using mveEngine;
	using System.Collections.Generic;
	using System.Windows.Forms;
	using MetaVideoEditorEvolved.Entity;
	using System.Linq;
    using System.Collections.ObjectModel;
	public interface IKernelHelper
	{
		List<MediaItem> RetrieveMainNodesAsMediaItems();
		string ValidateModifiedItemCollection();
		string ValidateItem(MediaItem itemToValidate);
		string ValidateItem(UI.Entity.VideoMediaElement itemToValidate);
		void SetSelectedItem(MediaItem selectedItem);
		void ClearCache();
		Item AutoSearchMediaItem(MediaItem itemToSearch);
		Item AutoSearchMediaItem(UI.Entity.VideoMediaElement itemToSearch);
        string GetString(string key);
        void SaveItem(MediaItem item);
        void SaveItem(UI.Entity.VideoMediaElement item);
        void ClearCheckedItems();
        void ReloadItemCollection();
        void RefreshData();
        mveEngine.Item LoadItemFromCache(string id);
        void UpdateLocalItemWithOptionsFromPlugin(Item localItem, Item fetchedItem);
        void CopyDataFromCache(Item newItem, Item itemFromCache);
        void InitKernel();
        int ItemCount();
        void LoadLocalDataAndSaveToCache(mveEngine.Item item);        
        string DownloadTrailer(UI.Entity.TrailerMediaItem trailerFile, UI.Entity.VideoMediaElement item);
        void PlayTrailer(string trailer);        
        string DownloadAndConvertTrailer(UI.Entity.TrailerMediaItem trailerFile, UI.Entity.VideoMediaElement item, VideoType format);
        Collection<string> ExtractAvailableMediaTypes();
        void ClearMetadata(UI.Entity.VideoMediaElement mediaItem);
        void SyncItemToEngine(Item newItem);
	}
}
